package dao;

import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.Query;
import modelo.Usuarios;
import util.JPAUtil;

/**
 *
 * @author gilberto.costa 14/03/2012 12:46
 */
public class UsuarioDao {

    public static List<Usuarios> retornaUsuarios() {
        EntityManager em = JPAUtil.retornarFabrica().createEntityManager();
        Query q = em.createQuery("FROM Usuarios order by id asc");
        List<Usuarios> lista = q.getResultList();
        em.close();
        return lista;
    }

    public static Usuarios retornaUsuariosPorId(Long id) {
        EntityManager em = JPAUtil.retornarFabrica().createEntityManager();
        Query q = em.createQuery("FROM Usuarios WHERE id = ?");
        q.setParameter(1, id);
        Usuarios retorno;
        try {
            retorno = (Usuarios) q.getSingleResult();
            em.close();
            return retorno;
        } catch (javax.persistence.NoResultException e) {
            em.close();
            return null;
        }
    }

    public static List<Usuarios> retornaUsuariosPorNome(String nome) {
        EntityManager em = JPAUtil.retornarFabrica().createEntityManager();
        Query q = em.createQuery("SELECT i FROM Usuarios i WHERE UPPER(i.nome_usuario) LIKE ? order by nome_usuario");
        q.setParameter(1, '%' + nome + '%');
        List<Usuarios> lista = q.getResultList();
        em.close();
        return lista;
    }

    public static Usuarios realizaLogin(String usuario, String senha) {
        EntityManager em = JPAUtil.retornarFabrica().createEntityManager();
        Query q = em.createQuery("FROM Usuarios i WHERE i.nome_usuario = ? AND senha = ?");
        q.setParameter(1, usuario);
        q.setParameter(2, senha);
        Usuarios retorno;
        try {
            retorno = (Usuarios) q.getSingleResult();
            em.close();
            return retorno;
        } catch (javax.persistence.NoResultException e) {
            em.close();
            return null;
        }
    }
}
